package cn.dodgeball.java;


import cn.dodgeball.util.Const;
import cn.dodgeball.util.PClass;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GameFrame extends JFrame implements ActionListener {
    public GameFrame() {
        this.init();
    }

    public void init() {
        // 窗口设置
        setTitle(Const.TITLE);                           // 窗口标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 退出程序
        setSize(Const.FRAME_WIDTH, Const.FRAME_HEIGHT);  // 窗口大小
        setResizable(false);                             // 禁止调整窗口大小
        setLocationRelativeTo(null);                     // 窗口放置到屏幕中心

        PClass.facePanel.setLayout(null);                                  // 使用自定义布局
        PClass.facePanel.setSize(Const.FRAME_WIDTH, Const.FRAME_HEIGHT);    // 设置大小
        PClass.facePanel.setOpaque(false);                                 // 确保 JPanel 不是 opaque 的

        // 创建按钮
        GameButton gameButton = new GameButton("开始游戏", 900, (int) (Const.FRAME_HEIGHT * 0.6), false);
        gameButton.addActionListener(this);
        GameButton setButton = new GameButton("设置", gameButton.getX(), gameButton.getY() + 80, true);
        setButton.addActionListener(this);
        GameButton helpButton = new GameButton("帮助",
                gameButton.getX() + Const.LARGEBUTTON_WIDTH - Const.SMALLBUTTON_WIDTH, gameButton.getY() + 80, true);
        helpButton.addActionListener(this);

        // 添加按钮
        PClass.facePanel.add(gameButton);
        PClass.facePanel.add(setButton);
        PClass.facePanel.add(helpButton);

        // 创建封面
        JLabel faceImg = new JLabel(new ImageIcon("src/cn/dodgeball/resources/img/face.png"));
        faceImg.setBounds(146, 129, 500, 381);
        PClass.facePanel.add(faceImg);

        // 创建背景
        BackGround backGround = new BackGround();

        // 创建分层容器
        JLayeredPane layeredPane = new JLayeredPane();
        layeredPane.setSize(Const.FRAME_WIDTH, Const.FRAME_HEIGHT); // 设置大小
        layeredPane.add(PClass.set, 0);                 // 添加设置面板
        layeredPane.add(PClass.gamePanel,1);            // 添加游戏面板
        layeredPane.add(PClass.facePanel, 2);           // 添加主界面容器
        layeredPane.add(PClass.ballPanel, 3);           // 添加小球容器
        layeredPane.add(backGround, 4);                 // 添加背景

        this.add(layeredPane); // 添加分层容器
        this.setVisible(true); // 显示窗体
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        System.out.print(command + '\n');
        switch (command) {
            case "开始游戏":
                PClass.facePanel.setVisible(false);
                PClass.gamePanel.start();
                break;
            case "设置":
                PClass.set.setting("facePanel");
                break;
            case "帮助":
                new Help();
                break;
        }
    }
}

